package xkp.lesson2;

public class MyInteger {
	//仿照包装类实现一个属于自己的常量池
	//这个常量池只能自己使用,所以使用private修饰
	private static class InnerCache{
		//常量池应该设计为一个数组
		//并且该数组需要通过类名称直接访问比较好(方便)
		//在非静态内部类中只能有静态常量，不能有静态变量
		//但是静态内部类中可以有静态变量
		static final int LOW = -128;
		static final int HEIGHT = 127;
		//长度256
		static final int cache[] = new int[HEIGHT-LOW];

		static {
			for(int i = LOW; i <= HEIGHT; i++)
				//常量池中直接就有256个Integer对象
				cache[i] = new Integer(i);
		}
		
		public static Integer valueof(int i) {
			if(i>=InnerCache.LOW && i<= InnerCache.HEIGHT) {
				return cache[i+128];
			}
			return new Integer(i);
		}

	}

}
